package com.lonzh.epark_volunteer.utils;

import android.util.Log;

/**
 * Log的封装
 *
 * @author toretto
 * @version 1.1
 * @date 2024/10/31
 * @since 1.8.6
 */
public final class LogUtil {
    
    /**
     * 数值从2开始是因为Log源码中对应的值是从2开始的，这里直接借鉴了
     */
    public static final int VERBOSE = 2;
    public static final int DEBUG = 3;
    public static final int INFO = 4;
    public static final int WARN = 5;
    public static final int ERROR = 6;
    public static final int ASSERT = 7;

    public static final int level = VERBOSE;

    /**
     * 最低级别，通常用于输出详细的信息，适合调试阶段使用
     */
    public static void v(String tag, String msg) {
        if (level <= VERBOSE) {
            Log.v(tag, msg);
        }
    }

    public static void v(String tag, String msg, Throwable tr) {
        if (level <= VERBOSE){
            Log.v(tag, msg, tr);
        }
    }

    /**
     * 调试信息，用于输出开发过程中的调试信息
     */
    public static void d(String tag, String msg) {
        if (level <= DEBUG) {
            Log.d(tag, msg);
        }
    }

    public static void d(String tag, String msg, Throwable tr){
        if (level <= DEBUG){
            Log.d(tag, msg, tr);
        }
    }

    /**
     *  一般信息，通常用于输出应用的运行状态和重要事件
     */
    public static void i(String tag, String msg) {
        if (level <= INFO) {
            Log.i(tag, msg);
        }
    }

    public static void i(String tag, String msg, Throwable tr){
        if (level <= INFO){
            Log.i(tag, msg, tr);
        }
    }

    /**
     * 警告信息，表示可能出现的问题或需要注意的事项
     */
    public static void w(String tag, String msg) {
        if (level <= WARN) {
            Log.w(tag, msg);
        }
    }

    public static void w(String tag, String msg, Throwable tr){
        if (level <= WARN){
            Log.w(tag, msg, tr);
        }
    }

    /**
     * 错误信息，表示出现了问题，通常是异常或错误的情况
     */
    public static void e(String tag, String msg) {
        if (level <= ERROR) {
            Log.e(tag, msg);
        }
    }

    public static void e(String tag, String msg, Throwable tr){
        if (level <= ERROR){
            Log.e(tag, msg, tr);
        }
    }

    /**
     * 断言信息，表示一个不应该发生的情况，通常用于开发和测试阶段
     */
    public static void a(String tag, String msg) {
        if (level <= ASSERT) {
            Log.e(tag, msg);
        }
    }

    public static void a(String tag, String msg, Throwable tr){
        if (level <= ASSERT){
            Log.e(tag, msg, tr);
        }
    }
}
